package ProyectoX;

/**
 * Clase abstracta Arma Enemiga que extiende a Dibujable
 */
	public abstract class ArmaEnemiga extends Dibujable {
	protected Nivel MiNivel;
	protected NaveEnemiga NaveEnem;
	
	/**
	 * Constructor ArmaEnemiga
	 * Inicializa los atributos.
	 */
	public ArmaEnemiga(Nivel Nivel, NaveEnemiga ne){
		MiNivel = Nivel;
		NaveEnem = ne;
	}
	 
	/**
	 * Retorna verdadero si el arma enemiga esta en pantalla
	 * Falso en caso contrario.
	 */
	public boolean estaEnPantalla(){
		boolean esta = false;
		if ((this.getX() < MiNivel.obtenerAnchoNivel()) && (this.getX()> 2)){
			if (this.getY() < MiNivel.obtenerAltoNivel() && this.getY()> 2)
				esta = this.isVisible();
		}
		return esta;
	}
	
	/**
	 * Mueve el arma enemiga.
	 * 
	 */
	public void Mover(int i) {
		this.setLocation(this.getX() - i,this.getY());
	}
	
	/**
	 * Pone como no visible el arma enemiga.
	 * */
	public  void quitarArma(){
		this.setVisible(false);	
	}
	
	/**
	 * Verifica si el arma enemiga colisiono con la nave jugador
	 * de ser asi la ataca.
	 * Si el jugador muere , se finaliza el nivel.
	 * 
	 * */
	protected synchronized void Colisiones(){
		
		if(this.estaEnPantalla()){
			NaveJugador jugador = MiNivel.obtenerNaveJugador();
			
			if(this.alcanzoObjeto(jugador)){
				
				jugador.serAtacado();
				this.quitarArma();
				
				if(! MiNivel.obtenerNaveJugador().vive()){
					MiNivel.Terminar();
				}
			}		
		}
	}
		
}
